package com.itbaizhan.shopping_common.result;

import co.elastic.clients.elasticsearch.xpack.usage.Base;
import lombok.AllArgsConstructor;
import lombok.Data;

import java.io.Serializable;

/**
 * 统一结果返回集
 *
 * @param <T>
 */
@Data
@AllArgsConstructor
public class BaseResult<T> implements Serializable {
    //状态码 （200：成功，其它：失败）
    private Integer code;
    // 提示消息
    private String message;
    // 返回数据
    private T data;

    // 构建成功返回结果
    public static <T> BaseResult<T> ok() {
        return new BaseResult<T>(CodeEnum.SUCCESS.getCode(), CodeEnum.SUCCESS.getMessage(), null);
    }

    //构建带有数据的成功返回结果
    public static <T> BaseResult<T> ok(T data) {
        return new BaseResult<T>(CodeEnum.SUCCESS.getCode(), CodeEnum.SUCCESS.getMessage(), data);
    }

    //构建失败返回结果
    public static BaseResult error(CodeEnum codeEnum) {
        return new BaseResult(codeEnum.getCode(), codeEnum.getMessage(), null);
    }

}
